/* Exercice 2*/ inf(M,P):-M>0, Q is M-1, inf(Q,P). inf(M,P):-M>0, P is M-1. aux1(_,[],0):-!. aux1(N,[X|L],M):-inf(N,X), P is M-1, aux1(N,L,P). genere(N,L):-aux1(N,L,N). compte([],_,0). compte([X|L],X,N):- !,compte(L,X,M), N is M+1. compte([_|L],X,N):-compte(L,X,N). ar(L):-aux(L,0,L). aux([],_,_). aux([X|L],N,G):-compte(G,N,X),M is N+1, aux(L,M). genar(N,G):-genere(N,G), ar(G). inf1(M,M). inf1(M,N):-M>0, P is M-1, inf1(P,N). genere1(N,L):-genereaux(N,N,L,N). genereaux(0,_,[],0). genereaux(K,N,[X|L],S):- K>0,inf(N,X), inf1(S,X), R is S-X, J is K-1, genereaux(J,N,L,R). genere2(N,L):-gaux(N,N,L,N,0,N). gaux(0,_,[],0,_,0). gaux(K,N,[X|L],S,I,P):-K>0, inf(N,X), inf1(S,X), F is I*X, inf1(P, F), J is K-1, R is S-X, T is P - I*X, O is I+1, gaux(J,N,L,R,O,T). /* Exercice 3 */ printSum([],[]). printSum([X|L],[Y|G]):- S is X+Y, writeln(S), printSum(L,G). printAppend([],[]). printAppend([X|L],[Y|G]):- string_concat(X,Y,Z), writeln(Z), printAppend(L,G). twoListIter(_,[],[]). twoListIter(P,[X|L],[Y|G]):-Q=..[P,X,Y],Q,twoListIter(P,L,G).